<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/3/21
 * Time: 14:23
 */

class Tbk{
    protected $appKey,$appSecret;
    function __construct($appKey='23709364',$appSecret='9fd5a034fdd7a0c99c3e6eea24ad7517'){
        $this->appKey = $appKey;
        $this->appSecret = $appSecret;
    }


    /**
     * 商品查询
     * @param $where 条件（二维数组）
     * @return array
     */
    function item_get($where=''){
        $paramArr = array(
            'method'        =>  'taobao.tbk.item.get', //API接口名称。
            'app_key'       =>  $this->appKey, //TOP分配给应用的AppKey。
            'sign_method'   =>  'md5', //签名的摘要算法，可选值为：hmac，md5。
            'timestamp'     =>  date('Y-m-d H:i:s'), //时间戳，格式为yyyy-MM-dd HH:mm:ss，时区为GMT+8，例如：2015-01-01 12:00:00。淘宝API服务端允许客户端请求最大时间误差为10分钟。
            'format'        => 'json', //响应格式。默认为xml格式，可选值：xml，json。
            'v'             => '2.0', //API协议版本，可选值：2.0。
            'platform'      =>  1,    //链接形式：1：PC，2：无线，默认：1
            'page_no'      =>  $where['page_no'] ? $where['page_no'] : 1,  //第几页，默认：1
            'page_size'      =>  $where['page_size'] ? $where['page_size'] : 20,    //页大小，默认20，1~100
            'sort'          =>  'total_sales_des',    //默认销量降序，排序_des（降序），排序_asc（升序），销量（total_sales），淘客佣金比率（tk_rate）， 累计推广量（tk_total_sales），总支出佣金（tk_total_commi）
            'is_tmall'      =>  $where['is_tmall'] ? $where['is_tmall'] : false,    //非必须，是否天猫商城商品，默认false
            'is_overseas'      =>  $where['page_no'] ? $where['page_no'] : false,    //非必须，是否海外商品，默认false
            'q'             =>  $where['q'] ? $where['q'] : '女装',    //查询词
            'itemloc'       =>  $where['itemloc'] ? $where['itemloc'] : '杭州',    //所在地
            'fields'        => $where['fields'] ? $where['fields'] : 'num_iid,
                        title,
                        pict_url,
                        small_images,
                        reserve_price,
                        zk_final_price,
                        user_type,
                        provcity,
                        item_url,
                        seller_id,
                        volume,
                        nick,
                        tk_rate,
                        total_sales',

//                        'start_price'      =>  10,    //折扣价范围下限，单位：元
//            'end_price'      =>  10,    //折扣价范围上限，单位：元
            'start_tk_rate'      =>  1234,    //淘客佣金比率上限，如：1234表示12.34%
            'end_tk_rate'      =>  5000,    //淘客佣金比率下限，如：1234表示12.34%
        );
        //生成签名
        $sign = createSign($paramArr,$this->appSecret);

        //组织参数
        $strParam = createStrParam($paramArr);
        $strParam .= 'sign='.$sign;

        //访问服务
        $url = 'http://gw.api.taobao.com/router/rest?'.$strParam; //沙箱环境调用地址
        $result = file_get_contents($url);
        $result = json_decode($result,true);
        return $result;
    }

    /**
     * 单品加券搜索
     */
    function item_coupon_get($where=''){
        $paramArr = array(
            'method'        =>  'taobao.tbk.item.coupon.get', //API接口名称。
            'app_key'       =>  $this->appKey, //TOP分配给应用的AppKey。
            'sign_method'   =>  'md5', //签名的摘要算法，可选值为：hmac，md5。
            'timestamp'     =>  date('Y-m-d H:i:s'), //时间戳，格式为yyyy-MM-dd HH:mm:ss，时区为GMT+8，例如：2015-01-01 12:00:00。淘宝API服务端允许客户端请求最大时间误差为10分钟。
            'format'        => 'json', //响应格式。默认为xml格式，可选值：xml，json。
            'v'             => '2.0', //API协议版本，可选值：2.0。
            'platform'      =>  1,    //链接形式：1：PC，2：无线，默认：1
            'page_no'      =>  $where['page_no'] ? $where['page_no'] : 1,  //第几页，默认：1
            'page_size'      =>  $where['page_size'] ? $where['page_size'] : 20,    //页大小，默认20，1~100
//            'sort'          =>  'total_sales_des',    //默认销量降序，排序_des（降序），排序_asc（升序），销量（total_sales），淘客佣金比率（tk_rate）， 累计推广量（tk_total_sales），总支出佣金（tk_total_commi）
//            'is_tmall'      =>  $where['is_tmall'] ? $where['is_tmall'] : false,    //非必须，是否天猫商城商品，默认false
//            'is_overseas'      =>  $where['page_no'] ? $where['page_no'] : false,    //非必须，是否海外商品，默认false
            'q'             =>  $where['q'] ? $where['q'] : '女装',    //查询词
            'pid'             =>  'mm_120879398_0_0',    //查询词
//            'itemloc'       =>  $where['itemloc'] ? $where['itemloc'] : '杭州',    //所在地
//                        'start_price'      =>  10,    //折扣价范围下限，单位：元
//            'end_price'      =>  10,    //折扣价范围上限，单位：元
//            'start_tk_rate'      =>  1234,    //淘客佣金比率上限，如：1234表示12.34%
//            'end_tk_rate'      =>  5000,    //淘客佣金比率下限，如：1234表示12.34%
        );
        //生成签名
        $sign = createSign($paramArr,$this->appSecret);

        //组织参数
        $strParam = createStrParam($paramArr);
        $strParam .= 'sign='.$sign;

        //访问服务
        $url = 'http://gw.api.taobao.com/router/rest?'.$strParam; //沙箱环境调用地址
        $result = file_get_contents($url);
        $result = json_decode($result,true);
        return $result;
    }
}

/**
 * 生成签名
 * @param $paramArr 参数
 * @param $appSecret 密钥
 * @return string
 */
function createSign ($paramArr,$appSecret) {
    $sign = $appSecret;
    ksort($paramArr);
    foreach ($paramArr as $key => $val) {
        if ($key != '' && $val != '') {
            $sign .= $key.$val;
        }
    }
    $sign.=$appSecret;
    $sign = strtoupper(md5($sign));
    return $sign;
}

/**
 * 组参函数
 * @param $paramArr
 * @return string
 */
function createStrParam ($paramArr) {
    $strParam = '';
    foreach ($paramArr as $key => $val) {
        if ($key != '' && $val != '') {
            $strParam .= $key.'='.urlencode($val).'&';
        }
    }
    return $strParam;
}